home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / 3DVIS10.ZIP / SOURCE1.C < prev    next >
Text File  |  1996-02-29  |  2KB  |  68 lines

  1. /*** SOURCE1.C - Creates a .3DV file with the definition of a surface
  2.          by Lenimar N. Andrade, ccendm03@brufpb.bitnet
  3.       Dep. of Mathematics - Universidade Federal da Paraíba - Brazil ***/
  4.  
  5. #include <stdio.h>
  6. #include <math.h>
  7. #include <conio.h>
  8.  
  9. unsigned nu = 25, nv = 25;
  10. FILE *arq;
  11.  
  12. /* Parametric equations that define the surface */
  13. float f1(float u, float v) { return sin(v)*cosh(u); }
  14. float f2(float u, float v) { return cos(v)*cosh(u); }
  15. float f3(float u, float v) { return sinh(u); }
  16.  
  17. /* ------------------------------------------------------------------------- */
  18.  
  19. void CalcPoints(float umin, float umax, float vmin, float vmax) {
  20.  
  21.   float u, v, incrU, incrV;
  22.   unsigned i, j;
  23.  
  24.   incrU = (umax - umin)/nu;
  25.   incrV = (vmax - vmin)/nv;
  26.  
  27.   fprintf(arq, "%u\n", (nu + 1)*(nv + 1));
  28.   for (v = vmin; v < vmax + incrV/2; v += incrV)
  29.     for (u = umin; u < umax + incrU/2; u+= incrU)
  30.       fprintf(arq, "%6.3f %6.3f %6.3f\n", f1(u, v), f2(u, v), f3(u, v));
  31.  
  32.   fprintf(arq, "%u\n", 2*(nu + 1)*(nv + 1));
  33.   for (i = 1; i <= (nu + 1)*(nv + 1); i++)
  34.     if (i % (nu + 1) == 1)
  35.       fprintf(arq, "%u %u\n", i, 0);
  36.     else
  37.       fprintf(arq, "%u %u\n", i, DARKGRAY);
  38.   for (i = 1; i <= nu + 1; i++)
  39.     for (j = 0; j <= nv; j++)
  40.       if (j == 0)
  41.     fprintf(arq, "%u %u\n", i + j*(1 + nu), 0);
  42.       else
  43.     fprintf(arq, "%u %u\n", i + j*(1 + nu), RED);
  44. }
  45.  
  46. /* ------------------------------------------------------------------------- */
  47.  
  48. void PrintMsg(void) {
  49.  
  50.   fprintf(arq, "\n%s", "Hyperboloid of one sheet, F(u, v) = (sin(v)*cosh(u), "
  51.                          "cos(v)*cosh(u), sinh(u))");
  52.   fprintf(arq, "\n%s", "Lenimar Nunes de Andrade, ccendm03@brufpb.bitnet\n");
  53. }
  54.  
  55. /* ------------------------------------------------------------------------- */
  56.  
  57. void main(void) {
  58.  
  59.   if ((arq = fopen("demo1.3dv", "wt")) == NULL) return;
  60.   CalcPoints(-2, 2, -3.1416, 3.1416);
  61.   PrintMsg();
  62.   fclose(arq);
  63. }
  64.  
  65. /* ------------------------------------------------------------------------- */
  66.  
  67. /*** END OF "SOURCE1.C" ***/
  68.